<?php
class Counter {
	public $path = "";
	public $filetype = ".gif";
	function generate($strCounterNo) {
		$srcImg = $this->createImage($this->path . "/" . substr($strCounterNo, 0, 1) . $this->filetype);
		for ($i = 1; $i < strlen($strCounterNo); $i++) {
			$desImg = $this->createImage($this->path . "/" . substr($strCounterNo, $i, 1) . $this->filetype);
			
			$srcImg = $this->mergeHorizontal($srcImg, $desImg);
		}
		
		return $srcImg;
	}
	function mergeHorizontal($srcImg, $desImg) {
		$size1 = array(imagesx($srcImg), imagesy($srcImg));
		$size2 = array(imagesx($desImg), imagesy($desImg));
		
		// Tạo ra hình mới với chiều dài bằng tổng chiều dài, chiều cao bằng chiều cao hình thứ 1
		if (function_exists("ImageCreateTrueColor")) {
			$new_image = ImageCreateTrueColor($size1[0] + $size2[0], $size1[1]);
	    } else {
			$new_image = ImageCreate($size1[0] + $size2[0], $height);
		}
		
		// Copy hình thứ 1 vào hình mới
		ImageCopy($new_image, $srcImg, 0, 0, 0, 0, $size1[0], $size1[1]);
		
		// Copy nối đuôi hình thứ 2 vào ngay sau hình thứ 1.
		ImageCopy($new_image, $desImg, $size1[0], 0, 0, 0, $size2[0], $size1[1]);
		
		return $new_image;
	}
	private function createImage($path,$format="") {
		if ($format == "") {
			if (strstr(strtolower($path), ".gif")) {
				$format = "GIF";
			} else if (strstr(strtolower($path), ".jpg") || strstr(strtolower($path), ".jpeg")) {
				$format = "JPEG";
			} else if (strstr(strtolower($path), ".png")) {
				$format = "PNG";
			} else {
			    $this->_property["ErrorMessage"] = "Unknown file format";
			    $this->_property["Error"]  = true;
			}
		}
		switch ($format) {
		    case "GIF":
				$image = ImageCreateFromGif($path);
				break;
		    case "JPEG":
				$image = ImageCreateFromJpeg($path);
				break;
		    case "PNG":
				$image = ImageCreateFromPng($path);
				break;
		}
		return $image;
	}
	
	function show($resource, $type = "JPEG") {
		$type = strtoupper($type);
		switch ($type) {
		    case "GIF":
			    header("Content-type: image/jpeg");
				ImageJpeg($resource, null, 100);
				
				break;
			case "JPG":
		    case "JPEG":
				header("Content-type: image/jpeg");
				ImageJpeg($resource, null, 100);
				
				break;
		    case "PNG":
				header("Content-type: image/png");
				ImagePng($resource);
				
				break;
		}
		return;
	}
}
?>